<?php
class UrlRule extends CBaseUrlRule
{
	public $connectionID = 'db';

	public function createUrl($manager, $route, $params, $ampersand)
	{
		if ($route === 'site/page')
		{
			if (isset($params['view']))
				return $params['view'] . '/';

		}
		return false;  // не применяем данное правило
	}

	public function parseUrl($manager,$request,$pathInfo,$rawPathInfo)
	{
		$act = Yii::app()->request->getParam('r', false);
		// посылаем на 404 реальные запросы
		if ($act) {
			throw new CHttpException(404,'Страница не найдена');
		}
		// посылаем на 404, если пытаются достучаться до квартир по другому адресу
		if ((stripos($pathInfo, 'home') !== false && stripos($pathInfo, 'home/phone') === false) && !Yii::app()->user->checkAccess('content')){
			throw new CHttpException(404,'Страница не найдена');
		}
		
		$matches = explode ('/',$pathInfo);
		if ($matches)
		{
			$urlManager = new UrlManager();
			if ($pathInfo == '') $pathInfo = '/';
			$provider = $urlManager->findByUrl($request->getUrl());
			$query = $provider->getData();
			
			// не применяем данное правило
			if (!isset($query[0]) || empty($query[0]->real_url)) {
				
				// проверим внутреннюю перелинковку
				if (stripos($request->getUrl(), '/catalog') == 0 && count($matches) >= 3) {
					$innerLink = new InnerLink();
					$provider = $innerLink->findByUrl($request->getUrl());
					$query = $provider->getData();
				
					
					if (!isset($query[0]) || empty($query[0]->real_url))
						return false;
					else 
						$query = urldecode($query[0]->real_url);
					
					
				}
				else
					return false;
			} else {
				$query = $query[0]->real_url;
			}
			
						
			$query = parse_url($query);			
			parse_str($query['query'], $_GET);
			$route = $_GET['r'];
			//die(print_r($_GET,1));
			if ($route) {
				return $route;
			}
		}
		return false;  // не применяем данное правило
	}
}